// pages/index/index.js
var util = require('../../utils/util.js')
var cloudhelper = require('../../cloudhelper/cloudhelper.js')
Page({
  /**
   * 页面的初始数据
   */
  data: {
    BBH: '2.1',
    loginRequestValue: false, //登录请求默认值
    userInfo: {}, //存储用户信息
    imgUrls: [
      'cloud://data-0b70e3.6461-data-0b70e3/indexSwiperImage/top_01.png',
      'cloud://data-0b70e3.6461-data-0b70e3/indexSwiperImage/top_02.png',
      'cloud://data-0b70e3.6461-data-0b70e3/indexSwiperImage/top_03.png',
      'cloud://data-0b70e3.6461-data-0b70e3/indexSwiperImage/top_04.png',
      'cloud://data-0b70e3.6461-data-0b70e3/indexSwiperImage/top_05.png'
    ],
    showTopinfo: false, //展示顶部欢迎栏
    showLoginForm: false, //展示权限获取界面
    showOrderTypeForm: false, //显示订单类型界面
    //---------------------------------------------------订单设置类变量
    business: true, //店铺营业状态：处在开门时间段&&店家正常营业
    openTime: '09:00', //店铺开门时间
    closeTime: '20:00', //店铺关门时间
    reserveState: '关闭预约', //预约状态开启: 开启预约、关闭预约
    deliverState: '关闭外卖', //外卖状态开启:开启外卖、关闭外卖
    tempParas: {
      js_code: '',
      session_key: '',
      encryptedData: '',
      iv: ''
    },
    blockOrderCount:0 , // 滞留订单数量
  },

  onShareAppMessage: function () {
    return {
      title: '伐木累炒酸奶',
      path: 'pages/index/index',
      success: function (res) {
        console.log(res)
      },
      fail: function (res) {
        console.log(res)
      }
    }
  },
  //-----------------------------------测试程序段
  //---------------------------在前端生成唯一流水号
  genOrderId() {
    let orderId = ""; //订单号
    for (var i = 0; i < 8; i++) //8位随机数，用以加在时间戳后面。
    {
      orderId += Math.floor(Math.random() * 10);
    }
    orderId = 'FML' + new Date().getTime() + orderId; //时间戳，用来生成订单号。
    return orderId;
  },
  testClick: function () {
    let that = this;
    wx.cloud.callFunction({
      name: 'test'
    }).then(res => {

      console.log(res)
    })
    // var test=[];
    // test.name='时宝顺'
    // console.log(test['name'])
  },
  //-----------------------------------单选框容器click事件：触发所在单选框值改变
  selectType: function (e) {
    var id = Number(e.currentTarget.dataset.id)
    //console.log(id)
    if (id == 1) //如果用户选择【在店即食】
    {
      this.setData({
        'order.typeId': id,
        'order.orderTime': '稍后',
        'order.addressInfo': null
      })
    } else if (id == 2) //如果用户选择【预约到店】
    {
      this.setData({
        'order.typeId': id,
        'order.addressInfo': null
      })
    } else if (id == 3) //如果用户选择了外卖的方式
    {
      this.setData({
        'order.typeId': id,
        'order.orderTime': '稍后'
      })
    }
  },
  //----------------------------------点击提示文本，跳转到地址选择页面
  selectAddress: function () {
    this.leadUsersToSelectAddress();
  },
  //----------------------------------引导用户，为保证在派送范围内，请先选择收货地址
  leadUsersToSelectAddress: function () {
    var that = this;
    wx.navigateTo({
      url: '../../pages/addressList/addressList',
    })

  },
  //预约时间可选范围刷新
  limitTimeSpan:function(){
    // 获取当前时间
    let myDate = new Date();
    let hh = ('0' + myDate.getHours().toString()).substr(-2);       //获取当前小时数(0-23)
    let mm = ('0' + myDate.getMinutes().toString()).substr(-2);       //获取当前分钟数(0-59)
    let current = hh + ":" + mm
    this.setData({
      openTime: current
    })
  },
  //选择时间改变时触发事件：同步刷新time的值
  bindTimeChange: function (e) {
    this.setData({
      'order.orderTime': e.detail.value
    })
  },
  //当取消选择时间时，触发事件
  bindTimeCancel: function (e) {
    this.setData({
      'order.orderTime': '稍后',
      'order.typeId': 0
    })
  },
  //-------------------------------------【用户点击退出：清除本地用户信息】
  clearStorageClick: function () {
    getApp().globalData.login = false
    this.setData({
      userInfo: null
    })
    wx.removeStorageSync('userInfo')
    wx.showToast({
      icon: 'cancel',
      title: '退出成功',
    })
  },
  //-------------------------------------【用户点击登录界面蒙层：隐藏登录界面】
  maskViewClick: function () {
    this.setData({
      showLoginForm: false
    })
  },
  //-------------------------------------【用户点击我的卡包】
  myWalletClick: function () {
    //---------------------------检查登录
    if (getApp().globalData.login == false) {
      this.loginFormShow(true);
      return;
    }

    let now = Date.parse(new Date()) + ''

    // wx.openCard({
    //   cardList: [{
    //     cardId: 'pX2-vjrW4Cum33QlrfTdgaIHmJNc',
    //     code: '123'
    //   }],
    //   success: function (res) { }
    // })
    wx.addCard({
      cardList: [{
        cardId: 'pX2-vjs-_yR3MgGvYliwJeBRbIzI',
        cardExt: '{"code": "", "openid": "", "timestamp": ' + now.substr(0, now.length - 3) + ', "signature":""}'
      }],
      success: function (res) {
        console.log(res.cardList) // 卡券添加结果
      },
      fail: function (err) {
        console.log(1)
      },
      complete: function (res) {
        console.log(res)
      }
    })

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) { },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.topNavShow2s();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 每次回到此页面，刷新是否有新的 [ 滞留订单 ]
    this.getBlockOrderCount()
    //每次回到此页面时，同步全局变量
    try {
      // 清空本地产品数据
      getApp().globalData.productInfo = null
      getApp().globalData.optionsInfo = null

      this.setData({
        //同步全局变量:订单信息 order
        order: getApp().globalData.order,
        //同步全局变量:userInfo
        userInfo: wx.getStorageSync('userInfo')
      })

      // 判断用户是否从订单选择页面返回来修改--订单类型
      let back_to_change_orderType = getApp().globalData.back_to_change_orderType
      if (back_to_change_orderType){
        this.setData({ showOrderTypeForm:true})
        getApp().globalData.back_to_change_orderType = false
      }
    } catch (e) { }
  },
  //----------------------------顶部欢迎栏，显示2.5s
  topNavShow2s: function () {
    var that = this;
    this.setData({
      showTopinfo: true
    })
    setTimeout(function () {
      that.setData({
        showTopinfo: false
      });
    }, 2500);
  },

  //----------------------------------------刷新显示产品信息
  freshDataAndLoginSession: function () {
    wx.showToast({
      icon:'none',
      title: '不要拉人家了啦~',
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    //每次离开首页时，将首页的订单信息记录至全局变量
    getApp().globalData.order = this.data.order

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    wx.stopPullDownRefresh();
    this.topNavShow2s();
    this.freshDataAndLoginSession()
    this.getBlockOrderCount()
    wx.stopPullDownRefresh();
  },
  //*********************************************【获取滞留订单数量】
  getBlockOrderCount:function(){
    let that = this
    const db = wx.cloud.database()
    db.collection('temp_orders').count().then(res => {
      that.setData({ blockOrderCount: res.total })
    })
  },
  //*********************************************button组件【获取用户信息】
  onGotUserInfo: function (e) {
    console.log(e.detail.errMsg)
    console.log(e.detail.userInfo)
    console.log(e.detail.rawData)
  },

  //*********************************************跳转到【会员中心】
  //----------------------------------------主页上点击会员中心
  ticketDistributionClick: function () {
    //---------------------------检查登录
    if (getApp().globalData.login == false) {
      this.loginFormShow(true);
      return;
    }
    //---------------------------
    var that = this
    wx.showLoading({
      title: '读取信息中...',
    })
    // 1. 查询云数据库中是否存在cardid字段，并且存在值
    const db = wx.cloud.database()
    const openid = wx.getStorageSync('userInfo').openid
    console.log(openid)
    db.collection('users').where({
      openid: openid // 填入当前用户 openid
    }).get().then(res => {
      if (res.data.length == 1 && res.data[0].cardid && res.data[0].cardid.length > 0) {
        console.log('用户已开通小程序会员功能,cardid:', res.data[0].cardid)
        //跳转至用户会员卡界面
        //util.openVipCard('p1Jdc1E9hvyb__Rw0xTd877hRWu8')
        util.openVipCardByCode('p1Jdc1E9hvyb__Rw0xTd877hRWu8', res.data[0].cardid)
      } else {
        console.log('用户尚未开通小程序会员功能')
        //跳转至开通页面
        wx.navigateTo({
          url: '../../pages/openMembership/openMembership',
        })
      }
      wx.hideLoading()
    })
  },
  //*********************************************跳转到【小熊跳舞页面】
  navToDancePage: function () {
    wx.navigateTo({
      url: '../../pages/transition/transition',
    })
  },

  //*********************************************跳转到【我的订单】
  navToMyOrders: function () {
    //---------------------------检查登录
    if (getApp().globalData.login == false) {
      this.loginFormShow(true);
      return;
    }
    //---------------------------
    wx.navigateTo({
      url: '../../pages/myOrders/myOrders',
    })
  },
  //*********************************************跳转到【订单管理】
  navToManageOrders: function () {
    wx.navigateTo({
      url: '../../pages/manageOrders/manageOrders',
    })
  },
  //*********************************************跳转到【订单管理】
  navToBlockingOrders:function(){
    wx.navigateTo({
      url: '../../pages/blockingOrders/blockingOrders',
    })
  },
  //*********************************************跳转到【店铺设置】
  navToSettings: function () {
    wx.navigateTo({
      url: '../../pages/shopSettings/shopSettings',
    })
  },
  //*********************************************跳转到【产品管理】
  navToManageProducts: function () {
    wx.navigateTo({
      url: '../../pages/manageProducts/manageProducts',
    })
  },
  //*********************************************跳转到【用户管理】
  navToUsersList:function(){
    wx.navigateTo({
      url: '../../pages/usersList/usersList',
    })
  },
  //*********************************************跳转到【活动数据】
  navToActivityData:function(){
    wx.navigateTo({
      url: '../../pages/activity/activityData/activityData',
    })
  },
  //*********************************************关于伐木累
  goToAboutUs: function () {
    wx.navigateTo({
      url: '../../pages/aboutUs/aboutUs',
    })
  },
  //*********************************************测试按钮
  testNavgationClick: function () {
    wx.cloud.callFunction({
      name:'weixinPayOrderQuery',
      data:{
        orderId:'FML155065094050184729959'
      }
    }).then(function (res) {
      console.log(res)
    })
    // let storageUserInfo = wx.getStorageSync('userInfo');
    // console.log(storageUserInfo.openid !== 'oek8g5flz1ayfGOgTp4NHUMCa-Pw')
    // if (storageUserInfo.openid !== 'oek8g5flz1ayfGOgTp4NHUMCa-P') {
    //   wx.showModal({
    //     title: '友情提示:',
    //     content: '对不起，测试功能仅开放给开发者',
    //     showCancel: false
    //   })
    // }
    // console.log(storageUserInfo)
  },
  //-------------------------方法：显示还是隐藏  登录窗体
  loginFormShow: function (bool) {
    this.setData({
      showLoginForm: bool
    })
  },

  //------------------------------------点击【吃酸奶咯】按钮
  mainButtonClick: function () {
    //---------------------------检查登录
    if (getApp().globalData.login == false) {
      this.loginFormShow(true);
      return;
    }
    //---------------------------
    let that = this
    wx.showLoading({title:'努力加载中...'})
    //1.查询店铺当前设置
    util.queryShopSettings().then(res => {
      let settings = res.data
      //console.log(settings)
      //2.刷新显示店铺营业状态
      let inOpenTimeSpan = util.timeRange(settings.openTime, settings.closeTime)
      let shopState = settings.shopState
      if (inOpenTimeSpan && shopState == '正常营业') {
        that.setData({
          business: true
        })
      } else {
        that.setData({
          business: false
        })
      }
      // 3.刷新显示是否开启：预约就餐和外卖就餐
      that.setData({
        reserveState: settings.reserve,
        deliverState: settings.deliver,
        openTime: settings.openTime,
        closeTime: settings.closeTime
      })
      //4.将店铺设置同步至全部变量
      getApp().globalData.settings = settings
      //console.log('settings:', getApp().globalData.settings)
      //5.刷新用户可选预约时间
      that.limitTimeSpan()
      wx.hideLoading()
      //6.能运行至此说明登录成功
      this.showOrderTypeForm();
    })
  },
  //-------------------------------------【进入选择】按钮click事件
  gotoMenu: function () {
    var that = this
    if (this.data.business == false) //处在非营业状态
    {
      wx.showModal({
        title: '店家休息中',
        content: '非常抱歉，今天已经无法下单了噢',
        cancelText: '明天再来',
        confirmText: '继续看看',
        complete: function (res) {
          if (res.confirm) //用户想要继续看看菜单
          {
            //关闭就餐方式选择界面
            that.setData({
              showOrderTypeForm: false
            })
            //跳转到产品选择页面
            wx.navigateTo({
              url: '../../pages/select/select',
            })
          } else {
            //关闭就餐方式选择界面
            that.setData({
              showOrderTypeForm: false
            })
          }
        }
      })
    } else { //处在正常营业状态
      var typeid = this.data.order.typeId
      //1-1校验【就餐方式】必选
      if (typeid == 0) {
        wx.showModal({
          title: '友情提示',
          content: '请先选择您的就餐方式噢~',
          showCancel: false
        })
        return;
      }
      //1-2校验【就餐方式:在店即食】无需任何操作
      else if (typeid == 1) { }
      //1-3校验【就餐方式:预约到店】必须选择时间
      else if (typeid == 2) {
        if (this.data.order.orderTime == '稍后') {
          wx.showModal({
            title: '友情提示',
            content: '您选择预约到店，请选择到店时间',
            showCancel: false
          })
          return;
        }
      }
      //1-4校验【就餐方式:外卖配送】必须选择地址
      else if (typeid == 3) {
        if (this.data.order.addressInfo == null) {
          wx.showModal({
            title: '友情提示',
            content: '请首先确认配送地址',
            cancelText: '取消',
            confirmText: '选择地址',
            complete: function (res) {
              if (res.confirm) {
                //进入地址选择界面
                that.selectAddress()
              }
            }
          })
          return;
        }
      }
      //(2)关闭就餐方式选择界面
      this.setData({
        showOrderTypeForm: false
      })
      //(3)跳转到产品选择页面
      wx.navigateTo({
        url: '../../pages/select/select',
      })
    }
  },
  //------------------------------------【显示订单类型窗体】
  showOrderTypeForm: function () {
    this.setData({
      showOrderTypeForm: true
    })
  },
  //------------------------------------【隐藏订单类型窗体】
  hideOrderTypeForm: function () {
    this.setData({
      showOrderTypeForm: false
    })
  },
  //*****************************此分割线下为：登录和授权相关***************************************/
  //-------------------------------------------------------------------
  /*点击授权登录按钮*/
  loginClick: function (e) {
    var that = this;
    var result = e.detail.errMsg
    console.log(result)
    if (result == 'getUserInfo:fail auth deny') //找到fail，说明用户点击了拒绝
    {
      wx.showModal({
        title: '友情提示:',
        content: '亲，授权后才能开启完整服务噢~',
        showCancel: false
      })
    } else {
      //运行至此，说明用户已完成授权，开始执行登录程序
      that.loginFormShow(false); //关闭登录窗体
      wx.showLoading({
        title: '正在登录'
      })
      //eval(str + "()")
      that.loginRequest();
      //关闭loading的操作在执行登录结果中
    }
  },
  //-------------------------------------------------------------------
  /*检查登录状态
    (1)存在session且未过期，说明还处在登录状态，将用户信息同步至 全局变量  return true
    (2)不存在session，说明为新用户，或者用户清理过  return false
  */
  loginStatusSync: function () {
    let that = this;
    let userInfo = wx.getStorageSync('userInfo'); //尝试获取本地登录loginStatus标识
    if (userInfo) {
      //从缓存中获取用户信息至本页data中
      let storageUserInfo = wx.getStorageSync('userInfo');
      console.log(storageUserInfo)
      if (storageUserInfo) {
        that.setData({
          userInfo: storageUserInfo
        })
        console.log('历史用户登录成功');
        that.showOrderTypeForm();
      } else {
        console.log('历史用户本地账号信息丢失');
        that.loginFormShow(true);
      }
    } else {
      //如果没有登录标识，则是无登录态，就需要进行登录
      console.log('用户storage不存在用户信息,新登录用户');
      that.loginFormShow(true);
    }
  },
  //-------------------------------------------------------------------
  /*向服务器发起登录请求
  (1) 请求成功，返回 true ；
    返回json格式的userInfo对象如下，记录至内存中 userInfo,并同步至本页数据
    {
    "login":"success/fail",
    "openid":"xxxxxxx",
    "session_key":"xxxxx",
    "userid":"xxxxxxx",
    "role":"普通用户",
    "error":""
    }
  (2)请求失败，返回 false
  */
  loginRequest: function () {
    var that = this;
    const app = getApp()
    let userInfo = undefined;
    let simple_func=function(){ console.log('执行回调函数')}
    let custom_func = arguments[0] ? arguments[0] : simple_func;
    wx.cloud.callFunction({
      name: 'login'
    })
      .then(res => {
        userInfo = res.result
        if (userInfo) //判断执行登录的云函数是否正确返回
        {
          if (userInfo.login == 'success') //执行登录成功
          {
            wx.setStorageSync('userInfo', userInfo) //记录用户信息至内存
            that.setData({
              userInfo: userInfo,
            })
            //---登录成功
            //全局登录态标识->赋值
            app.globalData.login = true;
            //关闭加载
            wx.hideLoading();

            wx.showModal({
              title: '友情提示',
              content: '登录成功，开始点单吧~',
              showCancel: false,
              confirmText: '好的'
            })
            
            //调用回调函数
            //that.showOrderTypeForm();
            //custom_func();
          } else {
            wx.removeStorageSync('userInfo') //清空内存信息
            //登录失败
            wx.hideLoading(); //关闭加载
            wx.showModal({
              title: '授权登录失败',
              content: '登录错误:' + userInfo.error,
              showCancel: false
            })
          }
        } else {
          console.log('云函数login无响应')
          wx.removeStorageSync('userInfo') //清空内存信息
          //登录失败
          wx.hideLoading(); //关闭加载
          wx.showModal({
            title: '授权登录失败',
            content: '请检查网络状态并稍后再试',
            showCancel: false
          })
        }
      })
  },
  contactUs: function () {
    var that = this;
    wx.showModal({
      title: '是心动的感觉？',
      content: '快联系我们吧',
      cancelText: '放你一马',
      confirmText: '马上联系',
      complete: function (res) {
        if (res.confirm) {
          //调起电话
          wx.makePhoneCall({
            phoneNumber: '15554795855',
          })
        }
      }
    })
  }
})